// 布局类型：垂直、经典、横向、分栏
export type LayoutType = "vertical" | "classic" | "transverse" | "columns";

// 组件尺寸类型：大、默认、小
export type AssemblySizeType = "large" | "default" | "small";

// 系统语言类型：中文、英文、无（null表示未设置）
export type LanguageType = "zh" | "en" | null;

/* 全局状态管理 */
export interface GlobalState {
  layout: LayoutType;           // 当前布局模式
  assemblySize: AssemblySizeType; // 组件尺寸
  language: LanguageType;        // 系统语言
  maximize: boolean;             // 是否窗口最大化
  primary: string;               // 主题颜色
  isDark: boolean;               // 是否暗黑模式
  isGrey: boolean;               // 是否灰度模式
  isWeak: boolean;               // 是否色弱模式
  asideInverted: boolean;        // 侧边栏是否反转颜色
  isWatermark: boolean;          // 是否显示水印
  isCollapse: boolean;           // 菜单是否折叠
  breadcrumb: boolean;           // 是否显示面包屑
  breadcrumbIcon: boolean;       // 是否显示面包屑图标
  tabs: boolean;                 // 是否显示标签页
  tabsIcon: boolean;             // 是否显示标签页图标
  footer: boolean;               // 是否显示页脚
}

/* 用户状态管理 */
export interface UserState {
  token: string;       // 用户认证令牌
  name: string;        // 用户显示名称
  loginName: String;   // 登录用户名
  nickName: string;    // 用户昵称
  userId: null;        // 用户ID（当前为null，可能需要调整）
  userInfo: any;       // 完整的用户信息对象
}

/* 标签页菜单属性 */
export interface TabsMenuProps {
  icon: string;    // 菜单图标
  title: string;   // 菜单标题
  path: string;    // 路由路径
  name: string;    // 路由名称
  close: boolean;  // 是否允许关闭标签页
}

/* 标签页状态管理 */
export interface TabsState {
  tabsMenuList: TabsMenuProps[]; // 当前打开的标签页列表
}

/* 权限状态管理 */
export interface AuthState {
  authButtonList: string[];              // 有权限的按钮列表
  authMenuList: Menu.MenuOptions[];      // 有权限的菜单列表
}

/* 保持组件存活状态管理 */
export interface KeepAliveState {
  keepAliveName: string[]; // 需要保持存活的组件名称列表（用于路由缓存）
}